from typing import Callable
from typing import Callable

from langchain_core.messages import ToolMessage
from Agents.DialogState import State

def create_entry_node(assistant_name: str, new_dialog_state: str) -> Callable:
    def entry_node(state: State) -> dict:
        tool_call_id = state["messages"][-1].tool_calls[0]["id"]

        return {
            "messages": [
                ToolMessage(
                    content=f"现在您是 {assistant_name}。 反思上面主机助理和用户之间的对话。"
                    f" 用户的需求未得到满足。使用提供的工具帮助用户。记住，您是 {assistant_name}，"
                    " 只有在成功调用适当的工具后，查询，更新，取消或其他操作才算完成。"
                    " 如果用户改变主意或需要其他任务的帮助，请调用 CompleteOrEscalate 函数将控制权交给主要主机助理。"
                    " 不要提到您是谁 - 只需作为主机助理的代理。",
                    tool_call_id=tool_call_id,
                )
            ],
            "dialog_state": new_dialog_state,
        }

    return entry_node